//
//  LMPatchManager.h
//  LMTestPatchDemo
//
//  Created by mengmenglu on 4/15/16.
//  Copyright © 2016 Hangzhou TaiXuan Network Technology Co., Ltd. All rights reserved.
/*
 *  热修复
 *  1、jsPatch(javascript语言)
 *  2、wax(lua语言)
 * （官方支持JavaScript脚本语言，所以一般使用的是Jspatch）
 *  ==============================================
 *  使用步骤
 *  1、先[LMPatchManager start]
 *  2、[LMPatchManager starunJavaScriptFilert]
 *  3、[LMPatchManager updatePatchFiles]
 *  注意事项：使用热修复时，updatePatchFiles中的脚本语言必须在视图创建之前，因为使用的是runtime机制即是动态替换方法或属性，需要在方法执行前去加载热修复文件才能达到热修复功能
 */

#import <Foundation/Foundation.h>

/**
 *  补丁文件更新成功的回调
 */
typedef void(^UpdatePatchFilesSuccessBlock)();

@interface LMPatchManager : NSObject


/**
 *  启动热修复功能
 */
+ (void)start;


/**
 *  执行Lua语句
 *
 *  @param luaString Lua语句
 */
+ (void)runLuaString:(NSString *)luaString;


/**
 *  执行js语句
 *
 *  @param javaScriptString js语句
 */
+ (void)runJavaScriptString:(NSString *)javaScriptString;


/**
 *  加载Lua文件
 *
 *  @param luaFileName Lua文件名称
 */
+ (void)runLuaFile:(NSString *)luaFileName;


/**
 *  加载js文件
 *
 *  @param javaScriptFileName js文件
 */
+ (void)runJavaScriptFile:(NSString *)javaScriptFileName;


/**
 *  更新补丁文件
 */
+ (void)updatePatchFiles;


/**
 *  更新补丁文件，并提供更新成功后的回调功能
 *
 *  @param updatePatchFilesSuccessBlock 更新成功后的回调
 */
+ (void)updatePatchFiles:(UpdatePatchFilesSuccessBlock)updatePatchFilesSuccessBlock;



/**
 *  清除补丁缓存
 */
+ (void)cleanPatchCache;

@end
